export const navigateToControl = () => {
	uni.navigateTo({
		url: '/pages/control/control'
	});
};
export const navigateTodroneAction = () => {
	uni.navigateTo({
		url: '/pages/droneAction/droneAction'
	});
};
export const navigateToRouteController = () => {
	uni.navigateTo({
		url: '/pages/RouteController/RouteController'
	});
};
export const navigateToLearnVideo = () => {
	uni.navigateTo({
		url: '/pages/learnVideo/learnVideo'
	});
};
export const navigateToPersonal = () => {
	uni.navigateTo({
		url: '/pages/mqttTest/mqttTest'
	});
};

export const navigateToRouteRecord = () => uni.navigateTo({ url: '/pages/routeRecord/routeRecord' });

// 获取路线名与路线id
export const fetchActiveRouteNameAndIdList = async () => {
	try {
		const response = await uni.request({
			url: getApp().globalData.rootUrl + `/monitor/getActiveRoutes`,
			method: 'GET',
			header: {
				'Content-Type': 'application/json'
			}
		});

		if (response.statusCode === 200) {
			return(response.data.data);
		} else {
			console.error('请求失败，状态码:', response.statusCode);
			uni.showToast({
				title: `请求失败: ${response.statusCode}`,
				icon: 'none'
			});
		}
	} catch (error) {
		console.error('请求异常:', {
			message: error.errMsg,
			code: error.errno,
			stack: error.stack
		});

		uni.showToast({
			title: `请求异常：${error.errMsg}`,
			icon: 'none',
			duration: 3000
		});
	}
};

// 获取无人机ID列表
export const fetchDroneIdList = async () => {
	try {
		const response = await uni.request({
			url: getApp().globalData.rootUrl + `/monitor/getDroneIdList`,
			method: 'GET',
			header: {
				'Content-Type': 'application/json'
			}
		});

		if (response.statusCode === 200) {
			return(response.data.data);
		} else {
			console.error('请求失败，状态码:', response.statusCode);
			uni.showToast({
				title: `请求失败: ${response.statusCode}`,
				icon: 'none'
			});
		}
	} catch (error) {
		console.error('请求异常:', {
			message: error.errMsg,
			code: error.errno,
			stack: error.stack
		});

		uni.showToast({
			title: `请求异常：${error.errMsg}`,
			icon: 'none',
			duration: 3000
		});
	}
};

export const saveGlobalDataToStorage = () => {
  try {
    uni.setStorageSync('globalData', getApp().globalData);
	console.log('全局数据保存成功');
  } catch (e) {
    console.error('保存全局数据失败:', e);
  }
};


const PI = 3.1415926535897932384626;
const a = 6378245.0;
const ee = 0.00669342162296594323;

function transformLat(x, y) {
  let ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));
  ret += (20.0 * Math.sin(6.0 * x * PI) + 20.0 * Math.sin(2.0 * x * PI)) * 2.0 / 3.0;
  ret += (20.0 * Math.sin(y * PI) + 40.0 * Math.sin(y / 3.0 * PI)) * 2.0 / 3.0;
  ret += (160.0 * Math.sin(y / 12.0 * PI) + 320 * Math.sin(y * PI / 30.0)) * 2.0 / 3.0;
  return ret;
}

function transformLon(x, y) {
  let ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));
  ret += (20.0 * Math.sin(6.0 * x * PI) + 20.0 * Math.sin(2.0 * x * PI)) * 2.0 / 3.0;
  ret += (20.0 * Math.sin(x * PI) + 40.0 * Math.sin(x / 3.0 * PI)) * 2.0 / 3.0;
  ret += (150.0 * Math.sin(x / 12.0 * PI) + 300.0 * Math.sin(x / 30.0 * PI)) * 2.0 / 3.0;
  return ret;
}

export function wgs84ToGcj02(lng, lat) {
  if ((lng < 72.004 || lng > 137.8347) || (lat < 0.8293 || lat > 55.8271)) return [lng, lat];

  let dLat = transformLat(lng - 105.0, lat - 35.0);
  let dLon = transformLon(lng - 105.0, lat - 35.0);
  const radLat = lat / 180.0 * PI;
  let magic = Math.sin(radLat);
  magic = 1 - ee * magic * magic;
  const sqrtMagic = Math.sqrt(magic);
  dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * PI);
  dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * PI);
  const mgLat = lat + dLat;
  const mgLon = lng + dLon;
  return [mgLon, mgLat];
}